/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.comp.dto;

import com.brain.comp.view.util.ConstantesComp;
import com.brain.conf.dto.MonedaDto;
import com.brain.conf.dto.ProductoDetaDto;
import com.brain.conf.dto.ProductoDto;
import com.brain.conf.dto.TarifaDto;
import com.brain.conf.dto.TipoCambioDto;
import com.brain.conf.dto.UnidadMedidaDto;
import com.brain.cont.dto.AsientoDto;
import com.brain.cont.dto.PlanContableDetaDto;
import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Transient;
import javax.validation.constraints.Size;

/**
 *
 * @author HvivesO
 */
@Entity
@Table(name = "TCOMP_DOCUMENTO_COMPRA_DETA")
public class DocumentoCompraDetaDto implements Serializable {
    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_TCOMP_DOCUMENTO_COMPRA_DETA")
    @TableGenerator(name = "SEQ_TCOMP_DOCUMENTO_COMPRA_DETA", table = "TCORE_ENTIDAD", pkColumnName = "NOMBRE", valueColumnName = "CORRELATIVO", pkColumnValue = "TCOMP_DOCUMENTO_COMPRA_DETA", allocationSize = 1)
    private Long id;
    @JoinColumn(name = "DOCUMENTO_COMPRA", referencedColumnName = "ID")
    @ManyToOne
    private DocumentoCompraDto documentoCompraDto;
    @Column(name = "ITEM")
    private int item;
    @JoinColumn(name = "PRODUCTO_DETA", referencedColumnName = "ID")
    @ManyToOne
    private ProductoDetaDto productoDetaDto;
    @JoinColumn(name = "UNIDAD_MEDIDA", referencedColumnName = "ID")
    @ManyToOne
    private UnidadMedidaDto unidadMedidaDto;
    @Column(name = "CANTIDAD")
    private BigDecimal cantidad;
    @Column(name = "PRECIO_UNITARIO_O")
    private BigDecimal precioUnitarioO;
    @JoinColumn(name = "MONEDA_O", referencedColumnName = "ID")
    @ManyToOne
    private MonedaDto monedaODto;
    @JoinColumn(name = "TIPO_CAMBIO", referencedColumnName = "ID")
    @ManyToOne
    private TipoCambioDto tipoCambioDto;
    @Column(name = "PRECIO_UNITARIO_D")
    private BigDecimal precioUnitarioD;
    @Column(name = "DESCUENTO")
    private BigDecimal descuento;
    @Column(name = "DESCUENTO_MONTO")
    private BigDecimal descuentoMonto;
    @Column(name = "PRECIO_UNITARIO_F")
    private BigDecimal precioUnitarioF;
    @JoinColumn(name = "PEDIDO_COMPRA_DETA", referencedColumnName = "ID")
    @ManyToOne
    private PedidoCompraDetaDto pedidoCompraDetaDto;
    @Size(max = 1)
    @Column(name = "ESTADO")
    private String estado;
    @Column(name = "SUB_TOTAL")
    private BigDecimal subTotal;
    @JoinColumn(name = "TARIFA", referencedColumnName = "ID")
    @ManyToOne
    private TarifaDto tarifaDto;
    @Column(name = "FACTOR_PAGO")
    private BigDecimal factorPago;
    @Column(name = "SUB_TOTAL_PARCIAL")
    private BigDecimal subTotalParcial;
    @Column(name = "IS_SAVE")
    private Boolean isSave;
    @Column(name = "FACTOR_CONVERSION")
    private BigDecimal factorConversion;
    @Transient
    private String estadoTexto;
    
    @JoinColumn(name = "CUENTA_CONTABLE", referencedColumnName = "ID")
    @ManyToOne
    private PlanContableDetaDto cuentaContableDto;
    
    @Column(name = "IND_AFECTO_IGV")
    private Boolean indAfectoIgv;
    
    @Column(name = "PORC_AFECTO")
    private BigDecimal porcAfecto;
    
    public DocumentoCompraDetaDto() {
    }

    public DocumentoCompraDetaDto(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public DocumentoCompraDto getDocumentoCompraDto() {
        return documentoCompraDto;
    }

    public void setDocumentoCompraDto(DocumentoCompraDto documentoCompraDto) {
        this.documentoCompraDto = documentoCompraDto;
    }

    public int getItem() {
        return item;
    }

    public void setItem(int item) {
        this.item = item;
    }

    public ProductoDetaDto getProductoDetaDto() {
        return productoDetaDto;
    }

    public void setProductoDetaDto(ProductoDetaDto productoDetaDto) {
        this.productoDetaDto = productoDetaDto;
    }

    public UnidadMedidaDto getUnidadMedidaDto() {
        return unidadMedidaDto;
    }

    public void setUnidadMedidaDto(UnidadMedidaDto unidadMedidaDto) {
        this.unidadMedidaDto = unidadMedidaDto;
    }

    public BigDecimal getCantidad() {
        return cantidad;
    }

    public void setCantidad(BigDecimal cantidad) {
        this.cantidad = cantidad;
    }

    public BigDecimal getPrecioUnitarioO() {
        return precioUnitarioO;
    }

    public void setPrecioUnitarioO(BigDecimal precioUnitarioO) {
        this.precioUnitarioO = precioUnitarioO;
    }

    public MonedaDto getMonedaODto() {
        return monedaODto;
    }

    public void setMonedaODto(MonedaDto monedaODto) {
        this.monedaODto = monedaODto;
    }

    public TipoCambioDto getTipoCambioDto() {
        return tipoCambioDto;
    }

    public void setTipoCambioDto(TipoCambioDto tipoCambioDto) {
        this.tipoCambioDto = tipoCambioDto;
    }

    public BigDecimal getPrecioUnitarioD() {
        return precioUnitarioD;
    }

    public void setPrecioUnitarioD(BigDecimal precioUnitarioD) {
        this.precioUnitarioD = precioUnitarioD;
    }

    public BigDecimal getDescuento() {
        return descuento;
    }

    public void setDescuento(BigDecimal descuento) {
        this.descuento = descuento;
    }

    public BigDecimal getDescuentoMonto() {
        return descuentoMonto;
    }

    public void setDescuentoMonto(BigDecimal descuentoMonto) {
        this.descuentoMonto = descuentoMonto;
    }

    public BigDecimal getPrecioUnitarioF() {
        return precioUnitarioF;
    }

    public void setPrecioUnitarioF(BigDecimal precioUnitarioF) {
        this.precioUnitarioF = precioUnitarioF;
    }

    public PedidoCompraDetaDto getPedidoCompraDetaDto() {
        return pedidoCompraDetaDto;
    }

    public void setPedidoCompraDetaDto(PedidoCompraDetaDto pedidoCompraDetaDto) {
        this.pedidoCompraDetaDto = pedidoCompraDetaDto;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Boolean getIsSave() {
        return isSave;
    }

    public void setIsSave(Boolean isSave) {
        this.isSave = isSave;
    }

    public BigDecimal getSubTotal() {
        return subTotal;
    }

    public void setSubTotal(BigDecimal subTotal) {
        this.subTotal = subTotal;
    }

    public TarifaDto getTarifaDto() {
        return tarifaDto;
    }

    public void setTarifaDto(TarifaDto tarifaDto) {
        this.tarifaDto = tarifaDto;
    }

    public String getEstadoTexto() {
        if(estado.equals(ConstantesComp.ValoresConstantes.DOC_COMPRA_DETA_COD_ESTADO_EN_ESPERA)){
            estadoTexto = ConstantesComp.ValoresConstantes.DOC_COMPRA_DETA_DESC_ESTADO_EN_ESPERA;
        }else if(estado.equals(ConstantesComp.ValoresConstantes.DOC_COMPRA_DETA_COD_ESTADO_RECIBIDO)){
            estadoTexto = ConstantesComp.ValoresConstantes.DOC_COMPRA_DETA_DESC_ESTADO_RECIBIDO;
        }else if(estado.equals(ConstantesComp.ValoresConstantes.DOC_COMPRA_DETA_COD_ESTADO_REC_PARCIAL)){
            estadoTexto = ConstantesComp.ValoresConstantes.DOC_COMPRA_DETA_DESC_ESTADO_REC_PARCIAL;
        }
        return estadoTexto;
    }

    public void setEstadoTexto(String estadoTexto) {
        this.estadoTexto = estadoTexto;
    }

    public BigDecimal getFactorPago() {
        return factorPago;
    }

    public void setFactorPago(BigDecimal factorPago) {
        this.factorPago = factorPago;
    }

    public BigDecimal getSubTotalParcial() {
        return subTotalParcial;
    }

    public void setSubTotalParcial(BigDecimal subTotalParcial) {
        this.subTotalParcial = subTotalParcial;
    }

    public BigDecimal getFactorConversion() {
        return factorConversion;
    }

    public void setFactorConversion(BigDecimal factorConversion) {
        this.factorConversion = factorConversion;
    }

    public PlanContableDetaDto getCuentaContableDto() {
        return cuentaContableDto;
    }

    public void setCuentaContableDto(PlanContableDetaDto cuentaContableDto) {
        this.cuentaContableDto = cuentaContableDto;
    }

    public Boolean getIndAfectoIgv() {
        return indAfectoIgv;
    }

    public void setIndAfectoIgv(Boolean indAfectoIgv) {
        this.indAfectoIgv = indAfectoIgv;
    }

    public BigDecimal getPorcAfecto() {
        return porcAfecto;
    }

    public void setPorcAfecto(BigDecimal porcAfecto) {
        this.porcAfecto = porcAfecto;
    }
    
    
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DocumentoCompraDetaDto)) {
            return false;
        }
        DocumentoCompraDetaDto other = (DocumentoCompraDetaDto) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.brain.comp.dto.DocumentoCompraDetaDto[ id=" + id + " ]";
    }
    
}
